/*
 *
 * consola.c
 *
 *  Created on: 21/11/2011
 *      Author: utn_so
 */


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/un.h>
#include <signal.h>
#include <errno.h>

#include "nipc.h"
#include "log.h"
#include "consola.h"
#include "config.h"

int fdCon;
int conectado = 0;
struct sockaddr_un 	dir;
int consola_handshake = 81;

/*
 type = 5 nuevo plani con el idDisco (fs.c 191)
 6 se escribio en todos los discos (plani.c 245)


 */

int main()
{
	int			retval;
	nipcMessage	msg;
	char		*h = NULL;


	dir.sun_family = AF_UNIX;
	strcpy(dir.sun_path, "/tmp/raid.temp");

	fdCon = socket(AF_UNIX, SOCK_STREAM, 0);

	conectar();

	printf(">>>>>>Consola");

	getDescriptorId(msg.payloadID, "127.0.0.1");
	sprintf(msg.payload, "%d", consola_handshake);
	msg.payloadLength = strlen(msg.payload) + 1;

	nipc_send(&msg, fdCon);

	retval = nipc_recv(&msg, fdCon);
	h = strchr(msg.payload, ';') + 1;

	if ((retval == NIPC_ERROR) || (*h == HANDSHAKE_FAIL))
	{
		close(fdCon);
	} else if(*(strtok(msg.payload, ";")) == 0)
	{
		do
		{
			h = strchr(msg.payload, ';') + 1;
			printf(">>>>>Consola  %s\n ", h);

		} while((nipc_recv(&msg, fdCon) != NIPC_ERROR) && (nipc_recv(&msg, fdCon) != NIPC_CONNECTION_LOST) );
	}

	if(!conectado)
		printf("> Se perdio la coneccion con el raid\n");

	return 0;

}

void conectar()
{
	int con = 0;

	con = connect(fdCon, (struct sockaddr*) &dir, sizeof(dir));

	if (con != 0)
	{
		perror("Imposible conectarse con el raid\n");
		close(fdCon);
		exit(1);
	}
	conectado = 1;
}

